#include <stdio.h>
#include <signal.h>
#include <unistd.h>


static void handler1(int sig);
static void alarm_handler(int sig);

int main(void)
{
    int i;

    signal(SIGALRM, alarm_handler); // ALRM信号
    alarm(5); // 5秒触发一次
    signal(SIGINT, handler1);

    while (1) {
        write(1, "*", 1);
        sleep(1);
        i++;

        if (i >= 10 && i < 15) 
            signal(SIGINT, SIG_DFL); // 默认
        else if (i >= 15)
            signal(SIGINT, SIG_IGN); // 忽略
    }

    return 0;
}

static void handler1(int sig)
{
    write(1, "!", 1);
}

static void alarm_handler(int sig)
{
    alarm(5); // 响应后五秒再次触发一次
    printf("alarm\n");
}
